import request from '@/config/axios'

// 司机认证提交 VO
export interface DriverAuthSubmitVO {
  driverName: string // 司机姓名
  idNumber: string // 身份证号
  driverLicenseNo: string // 驾驶证号
  idCardFrontImg: string // 身份证正面照片
  idCardBackImg: string // 身份证背面照片
  driverLicenseImg: string // 驾驶证照片
  rideHailingLicense?: string // 网约车驾驶员证
  licenseIssueDate?: Date // 证件签发日期
  licenseValidStart?: Date // 证件有效期开始
  licenseValidEnd?: Date // 证件有效期结束
  serviceCity?: string // 服务城市
  emergencyContact?: string // 紧急联系人
  emergencyContactPhone?: string // 紧急联系人电话
  bankName?: string // 银行名称
  bankAccount?: string // 银行账号
  accountHolder?: string // 开户人姓名
}

// OCR识别结果 VO
export interface OcrRecognizeRespVO {
  status: string // 识别状态
  errorMessage?: string // 错误消息
  text?: string // 识别的文本内容
  confidence?: number // 识别置信度
  fields?: OcrFieldResult[] // 识别的字段结果
  words?: WordResult[] // OCR识别的详细结果
  
  // === 直接可用的表单字段 ===
  driverName?: string // 司机姓名(可直接填入表单)
  idNumber?: string // 身份证号(可直接填入表单)
  gender?: string // 性别(可直接填入表单)
  driverLicenseNo?: string // 驾驶证号(可直接填入表单)
}

export interface OcrFieldResult {
  fieldName: string // 字段名称
  fieldValue: string // 字段值
  confidence: number // 置信度
}

export interface WordResult {
  text: string // 识别文本
  confidence: number // 置信度
  location?: Location // 文本位置
}

export interface Location {
  left: number // 左上角X坐标
  top: number // 左上角Y坐标
  width: number // 宽度
  height: number // 高度
}

// 身份证OCR识别
export const ocrIdCard = (fileId: number) => {
  return request.post<OcrRecognizeRespVO>({ 
    url: '/system/driver-auth/ocr/id-card', 
    params: { fileId } 
  })
}

// 驾驶证OCR识别
export const ocrDrivingLicense = (fileId: number) => {
  return request.post<OcrRecognizeRespVO>({ 
    url: '/system/driver-auth/ocr/driving-license', 
    params: { fileId } 
  })
}

// 提交司机认证
export const submitDriverAuth = (data: DriverAuthSubmitVO) => {
  return request.post<number>({ url: '/system/driver-auth/submit', data })
}

// 审核司机认证
export const auditDriverAuth = (driverId: number, auditStatus: number, auditRemark?: string) => {
  return request.put<boolean>({ 
    url: '/system/driver-auth/audit',
    params: { driverId, auditStatus, auditRemark }
  })
}